package Uebung01;

/**
 * Klasse Node zur Verwaltung von Knoten
 * 
 * @authorRobert Thiel, Janka W�bbekind, Nils Kunsem�ller, Jonas Hansen
 *
 */

public class Node{
			int[] name;			// Koordinaten des Knotenelements auf der Karte
			Node parent;		// Vorg�nger des Elements
			int H;				// Heuristik des Elements
			int G;				// Kosten
			int F;				// Sch�tzung der noch folgenden Kosten
			
		/**
		 *  Node() erzeugt einen neuen, leeren Knoten
		 */
		public Node(){
			
			name = null;
			parent = null;
			H = 0;
			G = 0;
			F = 0;
		}
	/**
	 * Add f�gt einen Nachfolgeknoten an, wenn dieser existiert
	 * 			
	 * @param t Nachfolgeknoten
	 * @param a Parent-Knoten
	 */
	public static void add(Node t, Node a) {				
		if(t!=null){
			t.parent = a;
			return;
		}
	}
	/**
	 * getParent() gibt den angegebenen Vorg�nger zur�ck
	 * 
	 * @return parent des aktuellen Elements
	 */
	public Node getParent(){
		return this.parent;
	}
	/**
	 * gibt die Heuristik zur�ck
	 * 
	 * @return Heuristik des aktuellen Elements
	 */
	public int getH(){
		return this.H;
		
	}
	/**
	 * gibt die Kosten zur�ck
	 * 
	 * @return Kosten des aktuellen Elements
	 */
	public int getG(){
		return this.G;
	}
	/**
	 * gibt die Sch�tzung der noch folgenden Kosten zur�ck
	 * 
	 * @return Sch�tzung des aktuellen Elements
	 */
	public int getF(){
		return this.F;
	}
	/**
	 * Weist dem aktuellen Element seine Koordinaten auf der Karte zu
	 * 
	 * @param Name Koordinaten (name[x][y])
	 * @return aktuelles Element mit Karteninformationen
	 */
	public int[] setName(int[] Name){	
		return this.name = Name;
	}
	/**
	 * weist dem aktuellen Knoten seinen Vorg�nger zu
	 * 
	 * @param t Vorg�nger
	 * @return ge�ndertes aktuelles Element
	 */
	public Node setParent(Node t){
		return this.parent = t;
	}
	/**
	 * Weist aktuellen Knoten die Heuristik zu
	 * 
	 * @param H berechnete Heuristik
	 * @return ge�ndertes aktuelles Element
	 */
	public int setH(int H){
		return this.H = H;
	}
	/**
	 * Weist aktuellen Knoten die noch erwarteten Kosten zu
	 * 
	 * @param F erwartete Kosten	
	 * @return ge�ndertes aktuelles Element
	 */
	public int setF(int F){
		return this.F = F;
	}
	/**
	 * Weist aktuellen Knoten die Kosten zu
	 * 
	 * @param G Kosten
	 * @return ge�ndertes aktuelles Element
	 */
	public int setG(int G){
		return this.G = G;
	}
	
	
}
		
